home *** CD-ROM | disk | FTP | other *** search
- Path: uunet!ogicse!zephyr.ens.tek.com!tekred!saab!billr
- From: billr@saab.CNA.TEK.COM (Bill Randle)
- Newsgroups: comp.sources.games
- Subject: v11i063: reve - an othello game, Patch1c
- Message-ID: <6567@tekred.CNA.TEK.COM>
- Date: 16 Nov 90 18:55:21 GMT
- Sender: news@tekred.CNA.TEK.COM
- Lines: 1592
- Approved: billr@saab.CNA.TEK.COM
- Posted: Fri Nov 16 10:55:21 1990
-
- Submitted-by: Rich Burridge <rburridge@sun.COM>
- Posting-number: Volume 11, Issue 63
- Archive-name: reve/Patch1c
- Patch-To: reve: Volume 11, Issue 52-58
- Environment: SunView, XView, X11R4, termcap
-
-
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 3 (of 4)."
- # Contents: patches01c
- # Wrapped by billr@saab on Fri Nov 16 10:46:44 1990
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'patches01c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'patches01c'\"
- else
- echo shar: Extracting \"'patches01c'\" \(48717 characters\)
- sed "s/^X//" >'patches01c' <<'END_OF_FILE'
- X
- X------- rev_eval.c -------
- X*** /tmp/da28908 Fri Nov 9 10:39:56 1990
- X--- rev_eval.c Mon Nov 5 09:06:42 1990
- X***************
- X*** 3,13 ****
- X *
- X * Copyright (C) 1990 - Yves Gallot - all rights reserved.
- X *
- X! * Permission is given to distribute these sources, as long as the
- X! * introductory messages are not removed, and no monies are exchanged.
- X *
- X! * You are forbidden from using Reve as is, or in a modified state, in
- X! * any tournaments, without the permission of the authors.
- X *
- X * No responsibility is taken for any errors on inaccuracies inherent
- X * either to the comments or the code of this program, but if reported
- X--- 3,18 ----
- X *
- X * Copyright (C) 1990 - Yves Gallot - all rights reserved.
- X *
- X! * Permission is granted to copy this source, for redistribution
- X! * in source form only, provided the news headers in "substantially
- X! * unaltered format" are retained, the introductory messages are not
- X! * removed, and no monies are exchanged.
- X *
- X! * Permission is also granted to copy this source, without the
- X! * news headers, for the purposes of making an executable copy by
- X! * means of compilation, provided that such copy will not be used
- X! * for the purposes of competition in any othello tournaments, without
- X! * prior permission from the authors.
- X *
- X * No responsibility is taken for any errors on inaccuracies inherent
- X * either to the comments or the code of this program, but if reported
- X***************
- X*** 23,36 ****
- X extern long c1, c2, c3 ;
- X extern long edges[6561] ;
- X
- X! /* Evaluation function : give a note to a board = damier[ niv ].
- X * It computes 4 components :
- X * - Edge Stability, using Edge Stability Table pre-computed before
- X * - Current Mobility, in fact computed during alpha-beta pruning
- X * - X squares Values
- X * - Potential Mobility, looking at squares contacts
- X! * And then Eval = c1 * ES + c2 * CM + c3 * XV + c4 * PM
- X! * Eval is replaced by - Eval if Black is replaced by White. Eval is positif
- X * if macouleur ( my color ) has a good position and negatif if tacouleur
- X * position is good.
- X * If we are "near" the end of the game, then Eval is equal to final disc
- X--- 28,41 ----
- X extern long c1, c2, c3 ;
- X extern long edges[6561] ;
- X
- X! /* Evaluation function : gives a note to a board = damier[ niv ].
- X * It computes 4 components :
- X * - Edge Stability, using Edge Stability Table pre-computed before
- X * - Current Mobility, in fact computed during alpha-beta pruning
- X * - X squares Values
- X * - Potential Mobility, looking at squares contacts
- X! * And then Eval = c1 * ES + c2 * ( CM + cx * XV ) + c3 * PM
- X! * Eval is replaced by - Eval if Black is replaced by White. Eval is positive
- X * if macouleur ( my color ) has a good position and negatif if tacouleur
- X * position is good.
- X * If we are "near" the end of the game, then Eval is equal to final disc
- X***************
- X*** 45,51 ****
- X register int i, x, y ;
- X register long note ;
- X register int vp, vo ;
- X! register long tnote ;
- X
- X d = damier[niv] ;
- X
- X--- 50,56 ----
- X register int i, x, y ;
- X register long note ;
- X register int vp, vo ;
- X! register long tnote, cx ;
- X
- X d = damier[niv] ;
- X
- X***************
- X*** 105,135 ****
- X }
- X note += edges[i] ;
- X
- X if (d[0] == FREE)
- X {
- X! if (d[9] == macouleur) note -= c3 ;
- X! else if (d[9] == tacouleur) note += c3 ;
- X }
- X
- X if (d[7] == FREE)
- X {
- X! if (d[14] == macouleur) note -= c3 ;
- X! else if (d[14] == tacouleur) note += c3 ;
- X }
- X
- X if (d[56] == FREE)
- X {
- X! if (d[49] == macouleur) note -= c3 ;
- X! else if (d[49] == tacouleur) note += c3 ;
- X }
- X
- X if (d[63] == FREE)
- X {
- X! if (d[54] == macouleur) note -= c3 ;
- X! else if (d[54] == tacouleur) note += c3 ;
- X }
- X
- X! tnote = c1 * note + c2 * (vp0 - vo0) / (vp0 + vo0 + 2) ;
- X
- X vp = vo = 0 ;
- X for (x = 0; x < 8; x++)
- X--- 110,142 ----
- X }
- X note += edges[i] ;
- X
- X+ cx = 8 * (50 - mnb - profmax) ;
- X+
- X if (d[0] == FREE)
- X {
- X! if (d[9] == macouleur) note -= cx ;
- X! else if (d[9] == tacouleur) note += cx ;
- X }
- X
- X if (d[7] == FREE)
- X {
- X! if (d[14] == macouleur) note -= cx ;
- X! else if (d[14] == tacouleur) note += cx ;
- X }
- X
- X if (d[56] == FREE)
- X {
- X! if (d[49] == macouleur) note -= cx ;
- X! else if (d[49] == tacouleur) note += cx ;
- X }
- X
- X if (d[63] == FREE)
- X {
- X! if (d[54] == macouleur) note -= cx ;
- X! else if (d[54] == tacouleur) note += cx ;
- X }
- X
- X! tnote = c1 * note + c2 * (long) 1000 * (vp0 - vo0) / (vp0 + vo0 + 2) ;
- X
- X vp = vo = 0 ;
- X for (x = 0; x < 8; x++)
- X***************
- X*** 219,225 ****
- X }
- X
- X note += ((long) 1000 * (vp - vo)) / (vp + vo + 2) ;
- X! tnote += 99 * note ;
- X! return(tnote) ;
- X }
- X }
- X--- 226,232 ----
- X }
- X
- X note += ((long) 1000 * (vp - vo)) / (vp + vo + 2) ;
- X! tnote += c3 * note ;
- X! return(tnote / 1000) ;
- X }
- X }
- X
- X------- rev_ip.c -------
- X*** /tmp/da28911 Fri Nov 9 10:39:56 1990
- X--- rev_ip.c Mon Nov 5 09:07:12 1990
- X***************
- X*** 3,11 ****
- X *
- X * Copyright (C) 1990 - Yves Gallot - all rights reserved.
- X *
- X! * Permission is given to distribute these sources, as long as the
- X! * introductory messages are not removed, and no monies are exchanged.
- X *
- X * No responsibility is taken for any errors on inaccuracies inherent
- X * either to the comments or the code of this program, but if reported
- X * (see README file), then an attempt will be made to fix them.
- X--- 3,19 ----
- X *
- X * Copyright (C) 1990 - Yves Gallot - all rights reserved.
- X *
- X! * Permission is granted to copy this source, for redistribution
- X! * in source form only, provided the news headers in "substantially
- X! * unaltered format" are retained, the introductory messages are not
- X! * removed, and no monies are exchanged.
- X *
- X+ * Permission is also granted to copy this source, without the
- X+ * news headers, for the purposes of making an executable copy by
- X+ * means of compilation, provided that such copy will not be used
- X+ * for the purposes of competition in any othello tournaments, without
- X+ * prior permission from the authors.
- X+ *
- X * No responsibility is taken for any errors on inaccuracies inherent
- X * either to the comments or the code of this program, but if reported
- X * (see README file), then an attempt will be made to fix them.
- X***************
- X*** 12,22 ****
- X */
- X
- X #include <stdio.h>
- X #include <sys/types.h>
- X #include <sys/time.h>
- X #include "reve.h"
- X
- X! extern time_t time() ;
- X extern int damier[NIVEAUMAX][64] ;
- X extern int tacouleur, macouleur ;
- X extern int mnb, profmax ;
- X--- 20,33 ----
- X */
- X
- X #include <stdio.h>
- X+ #include <signal.h>
- X+ #include <setjmp.h>
- X #include <sys/types.h>
- X #include <sys/time.h>
- X #include "reve.h"
- X
- X! extern int saveres ;
- X! extern time_t timeleft, time() ;
- X extern int damier[NIVEAUMAX][64] ;
- X extern int tacouleur, macouleur ;
- X extern int mnb, profmax ;
- X***************
- X*** 58,81 ****
- X
- X static int timevals[MAXDIFF] = { 0, 1, 3, 5, 10, 15, 20, 30, 60 } ;
- X
- X! static int cpi[60], cpj[60], cpk[60] ;
- X
- X static int locallevel = -1 ;
- X! static time_t timeleft ;
- X
- X static long jeplonge() ;
- X static long tuplonges() ;
- X long evalue() ;
- X
- X play_reve(board, color, level, rtnmv, rtnnote)
- X int *board, color, level, *rtnmv ;
- X long *rtnnote ;
- X {
- X register int *d0, *d1 ;
- X! register int k, cp, cpmax ;
- X! register long lnote, note ;
- X! register int count, fact ;
- X! time_t firsttime, timeused, allotime ;
- X
- X for (k = 0; k < 60; k++)
- X {
- X--- 69,105 ----
- X
- X static int timevals[MAXDIFF] = { 0, 1, 3, 5, 10, 15, 20, 30, 60 } ;
- X
- X! static int cpi[60], cpj[60], cpk[60], cpf[60] ;
- X! static int cpi2[60], cpj2[60], cpk2[60] ;
- X! static int cpmaxi[4] ;
- X
- X static int locallevel = -1 ;
- X! static firsttime, timeused, allotime ;
- X
- X+ jmp_buf jumper ;
- X+
- X static long jeplonge() ;
- X static long tuplonges() ;
- X long evalue() ;
- X
- X+
- X+ static void
- X+ catcher()
- X+ {
- X+ longjmp(jumper, 1) ;
- X+ }
- X+
- X+
- X play_reve(board, color, level, rtnmv, rtnnote)
- X int *board, color, level, *rtnmv ;
- X long *rtnnote ;
- X {
- X register int *d0, *d1 ;
- X! register int k, cp ;
- X! register long lnote ;
- X! register int count ;
- X! static int cpmax, note, oldnote ;
- X! FILE *fp ;
- X
- X for (k = 0; k < 60; k++)
- X {
- X***************
- X*** 119,125 ****
- X mnb++ ;
- X cp = 0 ;
- X while (cpk[cp] != k) cp++ ;
- X! for ( ; cp < 60; cp++)
- X {
- X cpi[cp] = cpi[cp + 1] ;
- X cpj[cp] = cpj[cp + 1] ;
- X--- 143,149 ----
- X mnb++ ;
- X cp = 0 ;
- X while (cpk[cp] != k) cp++ ;
- X! for ( ; cp < 59; cp++)
- X {
- X cpi[cp] = cpi[cp + 1] ;
- X cpj[cp] = cpj[cp + 1] ;
- X***************
- X*** 129,135 ****
- X
- X if ((locallevel != level) || (mnb == 1) || (mnb == 2))
- X {
- X! timeleft = timevals[level] * 60 ;
- X locallevel = level ;
- X }
- X
- X--- 153,159 ----
- X
- X if ((locallevel != level) || (mnb == 1) || (mnb == 2))
- X {
- X! timeleft = timevals[level-1] * 60 ;
- X locallevel = level ;
- X }
- X
- X***************
- X*** 137,171 ****
- X for (cp = 0; cp <= 60 - mnb; cp++)
- X if (d0[cpk[cp]] == JPJ) k++ ;
- X
- X! if ((k == 1) || (mnb == 1))
- X {
- X- note = 0 ;
- X- timeused = profmax = 1 ;
- X for (cp = 0; d0[cpk[cp]] != JPJ; cp++) ;
- X cpi[0] = cpi[cp] ;
- X cpj[0] = cpj[cp] ;
- X cpk[0] = cpk[cp] ;
- X }
- X else
- X! {
- X! count = 0 ;
- X! profmax = 1 ;
- X! allotime = timeleft * 2 / (60 - mnb) ;
- X firsttime = time((time_t *) NULL) ;
- X do
- X {
- X note = -1000000000 ;
- X
- X c1 = 312 + 6 * (mnb + profmax) ;
- X if (mnb + profmax < 25)
- X! c2 = 1000 * (long) (50 + 2 * (mnb + profmax)) ;
- X else
- X! c2 = 1000 * (long) (75 + mnb + profmax) ;
- X! c3 = 4 * (50 - mnb - profmax) ;
- X
- X profmax++ ;
- X- if (profmax > 55 - mnb) profmax = 61 - mnb ;
- X
- X for (cp = 0; cp <= 60 - mnb; cp++)
- X {
- X if (d0[cpk[cp]] == JPJ)
- X--- 161,256 ----
- X for (cp = 0; cp <= 60 - mnb; cp++)
- X if (d0[cpk[cp]] == JPJ) k++ ;
- X
- X! count = note = cpmax = 0 ;
- X! timeused = profmax = 1 ;
- X!
- X! if (((k == 1) && (mnb < 52)) || (mnb == 1))
- X {
- X for (cp = 0; d0[cpk[cp]] != JPJ; cp++) ;
- X cpi[0] = cpi[cp] ;
- X cpj[0] = cpj[cp] ;
- X cpk[0] = cpk[cp] ;
- X }
- X+ else if (mnb == 2)
- X+ {
- X+ if (d0[2 * 8 + 3] == BLACK)
- X+ {
- X+ cpi[0] = 4 ;
- X+ cpj[0] = 2 ;
- X+ }
- X+ else if (d0[3 * 8 + 2] == BLACK)
- X+ {
- X+ cpi[0] = 2 ;
- X+ cpj[0] = 4 ;
- X+ }
- X+ else if (d0[4 * 8 + 5] == BLACK)
- X+ {
- X+ cpi[0] = 5 ;
- X+ cpj[0] = 3 ;
- X+ }
- X+ else if (d0[5 * 8 + 4] == BLACK)
- X+ {
- X+ cpi[0] = 3 ;
- X+ cpj[0] = 5 ;
- X+ }
- X+ cpk[0] = cpi[0] * 8 + cpj[0] ;
- X+ }
- X+ else if (mnb == 3)
- X+ {
- X+ if (d0[4 * 8 + 2] == WHITE)
- X+ {
- X+ cpi[0] = 5 ;
- X+ cpj[0] = 3 ;
- X+ }
- X+ else if (d0[2 * 8 + 2] == WHITE)
- X+ {
- X+ cpi[0] = 3 ;
- X+ cpj[0] = 2 ;
- X+ }
- X+ else if (d0[2 * 8 + 4] == WHITE)
- X+ {
- X+ cpi[0] = 3 ;
- X+ cpj[0] = 5 ;
- X+ }
- X+ cpk[0] = cpi[0] * 8 + cpj[0] ;
- X+ }
- X else
- X! {
- X! allotime = timeleft * 3 / (61 - mnb) ;
- X firsttime = time((time_t *) NULL) ;
- X+
- X+ signal(SIGALRM, catcher) ;
- X+
- X+ if (setjmp(jumper) != 0)
- X+ {
- X+ if (cpmax == 0) note = oldnote ;
- X+ profmax = -profmax ;
- X+ goto trap ;
- X+ }
- X+
- X do
- X {
- X+ oldnote = note ;
- X note = -1000000000 ;
- X
- X+ if ((int) (allotime - timeused) > 2) alarm(allotime - timeused) ;
- X+
- X c1 = 312 + 6 * (mnb + profmax) ;
- X if (mnb + profmax < 25)
- X! c2 = 50 + 2 * (mnb + profmax) ;
- X else
- X! c2 = 75 + mnb + profmax ;
- X! c3 = 99 ;
- X
- X profmax++ ;
- X
- X+ if (profmax > 53 - mnb)
- X+ {
- X+ profmax = 61 - mnb ;
- X+ allotime = timeleft * 3 / 5 ;
- X+ if ((int) (allotime - timeused) > 2) alarm(allotime - timeused) ;
- X+ }
- X+
- X for (cp = 0; cp <= 60 - mnb; cp++)
- X {
- X if (d0[cpk[cp]] == JPJ)
- X***************
- X*** 185,215 ****
- X }
- X }
- X }
- X! if (cpmax == 0) count++ ;
- X else
- X {
- X! count = 1 ;
- X! k = cpi[0] ;
- X! cpi[0] = cpi[cpmax] ;
- X! cpi[cpmax] = k ;
- X! k = cpj[0] ;
- X! cpj[0] = cpj[cpmax] ;
- X! cpj[cpmax] = k ;
- X! k = cpk[0] ;
- X! cpk[0] = cpk[cpmax] ;
- X! cpk[cpmax] = k ;
- X }
- X timeused = time((time_t *) NULL) - firsttime ;
- X! if (count < 3) fact = 1 ;
- X! else fact = 3 ;
- X }
- X! while ((timeused * fact < allotime) && (profmax <= 60 - mnb)) ;
- X if (timeused == 0) timeused = 1 ;
- X }
- X
- X! timeleft -= timeused ;
- X
- X! *rtnmv = cpk[0] ;
- X *rtnnote = note ;
- X }
- X
- X--- 270,349 ----
- X }
- X }
- X }
- X!
- X! alarm(0) ;
- X! cpmaxi[0] = cpmax ;
- X!
- X! if ((mnb < 57) && (cpmaxi[0] != cpmaxi[1])
- X! && (cpmaxi[1] != cpmaxi[2]) && (cpmaxi[0] != cpmaxi[2]))
- X! {
- X! if (cpmax == 0) count++ ; else count = 1 ;
- X! for (cp = 0; cp <= 60 - mnb; cp++) cpf[cp] = TRUE ;
- X! for (k = 0; k < 3; k++)
- X! {
- X! cpi2[k] = cpi[cpmaxi[k]] ;
- X! cpj2[k] = cpj[cpmaxi[k]] ;
- X! cpk2[k] = cpk[cpmaxi[k]] ;
- X! cpf[cpmaxi[k]] = FALSE ;
- X! }
- X! k = 3 ;
- X! for (cp = 0; cp <= 60 - mnb; cp++)
- X! if (cpf[cp] == TRUE)
- X! {
- X! cpi2[k] = cpi[cp] ;
- X! cpj2[k] = cpj[cp] ;
- X! cpk2[k] = cpk[cp] ;
- X! k++ ;
- X! }
- X! for (cp = 0; cp <= 60 - mnb; cp++)
- X! {
- X! cpi[cp] = cpi2[cp] ;
- X! cpj[cp] = cpj2[cp] ;
- X! cpk[cp] = cpk2[cp] ;
- X! }
- X! }
- X else
- X {
- X! cpi2[0] = cpi[cpmax] ;
- X! cpj2[0] = cpj[cpmax] ;
- X! cpk2[0] = cpk[cpmax] ;
- X! cpi[cpmax] = cpi[0] ;
- X! cpj[cpmax] = cpj[0] ;
- X! cpk[cpmax] = cpk[0] ;
- X! cpi[0] = cpi2[0] ;
- X! cpj[0] = cpj2[0] ;
- X! cpk[0] = cpk2[0] ;
- X }
- X+ cpmax = 0 ;
- X timeused = time((time_t *) NULL) - firsttime ;
- X! if ((mnb == 4) && (profmax == 3)) break ;
- X }
- X! while ((timeused * count < allotime * 5 / 4) && (profmax != 61 - mnb)) ;
- X! trap:
- X! timeused = time((time_t *) NULL) - firsttime ;
- X if (timeused == 0) timeused = 1 ;
- X }
- X
- X! if (*rtnmv == TRUE) timeleft -= timeused ;
- X! if ((int) timeleft < 0) timeleft = 0 ;
- X
- X! if (saveres)
- X! {
- X! if ((mnb == 1) || (mnb == 2))
- X! {
- X! fp = fopen("reve.res", "w") ;
- X! FPRINTF(fp, "\n") ;
- X! FCLOSE(fp) ;
- X! }
- X! fp = fopen("reve.res", "a") ;
- X! FPRINTF(fp, "%2d, <%c-%c>, ", mnb, 'A' + cpj[cpmax], '1' + cpi[cpmax]) ;
- X! FPRINTF(fp, "nt : %5d, pmax : %3d, tmleft : %d, level : %d, ",
- X! note, profmax, timeleft, level) ;
- X! FPRINTF(fp, "exp : <%c-%c>\n", 'A' + cpj[1], '1' + cpi[1]) ;
- X! FCLOSE(fp) ;
- X! }
- X!
- X! *rtnmv = cpk[cpmax] ;
- X *rtnnote = note ;
- X }
- X
- X***************
- X*** 220,226 ****
- X long alpha, beta ;
- X {
- X register int *d0, *d1 ;
- X! register int k, cp ;
- X register long lnote, note ;
- X
- X d0 = damier[niv] ;
- X--- 354,360 ----
- X long alpha, beta ;
- X {
- X register int *d0, *d1 ;
- X! register int k, cp, cpmax ;
- X register long lnote, note ;
- X
- X d0 = damier[niv] ;
- X***************
- X*** 241,250 ****
- X lnote = tuplonges(niv + 1, alpha, note) ;
- X else
- X lnote = evalue(niv + 1) ;
- X! if (lnote < note) note = lnote ;
- X if (note <= alpha) return note ;
- X }
- X }
- X return note ;
- X }
- X
- X--- 375,397 ----
- X lnote = tuplonges(niv + 1, alpha, note) ;
- X else
- X lnote = evalue(niv + 1) ;
- X! if (lnote < note)
- X! {
- X! note = lnote ;
- X! cpmax = cp ;
- X! }
- X if (note <= alpha) return note ;
- X }
- X }
- X+
- X+ if (niv == 1)
- X+ {
- X+ cpmaxi[1] = cpmax ;
- X+ cpmaxi[2] = cpmaxi[3] ;
- X+ }
- X+ else if (niv == 2)
- X+ cpmaxi[3] = cpmax ;
- X+
- X return note ;
- X }
- X
- X***************
- X*** 255,261 ****
- X long alpha, beta ;
- X {
- X register int *d0, *d1 ;
- X! register int k, cp ;
- X register long lnote, note ;
- X
- X d0 = damier[niv] ;
- X--- 402,408 ----
- X long alpha, beta ;
- X {
- X register int *d0, *d1 ;
- X! register int k, cp, cpmax ;
- X register long lnote, note ;
- X
- X d0 = damier[niv] ;
- X***************
- X*** 276,284 ****
- X lnote = jeplonge(niv + 1, note, beta) ;
- X else
- X lnote = evalue(niv + 1) ;
- X! if (lnote > note) note = lnote ;
- X if (note >= beta) return note ;
- X }
- X }
- X return note ;
- X }
- X--- 423,444 ----
- X lnote = jeplonge(niv + 1, note, beta) ;
- X else
- X lnote = evalue(niv + 1) ;
- X! if (lnote > note)
- X! {
- X! note = lnote ;
- X! cpmax = cp ;
- X! }
- X if (note >= beta) return note ;
- X }
- X }
- X+
- X+ if (niv == 1)
- X+ {
- X+ cpmaxi[1] = cpmax ;
- X+ cpmaxi[2] = cpmaxi[3] ;
- X+ }
- X+ else if (niv == 2)
- X+ cpmaxi[3] = cpmax ;
- X+
- X return note ;
- X }
- X
- X------- rev_iycp.c -------
- X*** /tmp/da28914 Fri Nov 9 10:39:57 1990
- X--- rev_iycp.c Mon Nov 5 09:10:39 1990
- X***************
- X*** 3,13 ****
- X *
- X * Copyright (C) 1990 - Yves Gallot - all rights reserved.
- X *
- X! * Permission is given to distribute these sources, as long as the
- X! * introductory messages are not removed, and no monies are exchanged.
- X *
- X! * You are forbidden from using Reve as is, or in a modified state, in
- X! * any tournaments, without the permission of the authors.
- X *
- X * No responsibility is taken for any errors on inaccuracies inherent
- X * either to the comments or the code of this program, but if reported
- X--- 3,18 ----
- X *
- X * Copyright (C) 1990 - Yves Gallot - all rights reserved.
- X *
- X! * Permission is granted to copy this source, for redistribution
- X! * in source form only, provided the news headers in "substantially
- X! * unaltered format" are retained, the introductory messages are not
- X! * removed, and no monies are exchanged.
- X *
- X! * Permission is also granted to copy this source, without the
- X! * news headers, for the purposes of making an executable copy by
- X! * means of compilation, provided that such copy will not be used
- X! * for the purposes of competition in any othello tournaments, without
- X! * prior permission from the authors.
- X *
- X * No responsibility is taken for any errors on inaccuracies inherent
- X * either to the comments or the code of this program, but if reported
- X
- X------- reve.h -------
- X*** /tmp/da28917 Fri Nov 9 10:39:58 1990
- X--- reve.h Mon Nov 5 09:07:58 1990
- X***************
- X*** 6,16 ****
- X * Copyright (C) 1990 - Rich Burridge & Yves Gallot.
- X * All rights reserved.
- X *
- X! * Permission is given to distribute these sources, as long as the
- X! * introductory messages are not removed, and no monies are exchanged.
- X *
- X! * You are forbidden from using Reve as is, or in a modified state, in
- X! * any tournaments, without the permission of the authors.
- X *
- X * No responsibility is taken for any errors on inaccuracies inherent
- X * either to the comments or the code of this program, but if reported
- X--- 6,21 ----
- X * Copyright (C) 1990 - Rich Burridge & Yves Gallot.
- X * All rights reserved.
- X *
- X! * Permission is granted to copy this source, for redistribution
- X! * in source form only, provided the news headers in "substantially
- X! * unaltered format" are retained, the introductory messages are not
- X! * removed, and no monies are exchanged.
- X *
- X! * Permission is also granted to copy this source, without the
- X! * news headers, for the purposes of making an executable copy by
- X! * means of compilation, provided that such copy will not be used
- X! * for the purposes of competition in any othello tournaments, without
- X! * prior permission from the authors.
- X *
- X * No responsibility is taken for any errors on inaccuracies inherent
- X * either to the comments or the code of this program, but if reported
- X***************
- X*** 17,26 ****
- X * (see README file), then an attempt will be made to fix them.
- X */
- X
- X #define FCLOSE (void) fclose /* To make lint happy. */
- X #define FFLUSH (void) fflush
- X #define FGETS (void) fgets
- X- #define FREAD (void) fread
- X #define FSEEK (void) fseek
- X #define FPRINTF (void) fprintf
- X #define GETTIMEOFDAY (void) gettimeofday
- X--- 22,33 ----
- X * (see README file), then an attempt will be made to fix them.
- X */
- X
- X+ #include <stdio.h>
- X+ #include <sys/types.h>
- X+
- X #define FCLOSE (void) fclose /* To make lint happy. */
- X #define FFLUSH (void) fflush
- X #define FGETS (void) fgets
- X #define FSEEK (void) fseek
- X #define FPRINTF (void) fprintf
- X #define GETTIMEOFDAY (void) gettimeofday
- X***************
- X*** 42,57 ****
- X #define BGAP 10 /* Width of the gap between buttons. */
- X #define BHEIGHT 32 /* Height of a reve button item. */
- X #define BWIDTH 64 /* Width of a reve button item. */
- X- #define CELL_SIZE (int) ((TOTAL_WIDTH-(2*BBORDER)) / BOARD_SIZE)
- X #define CHEIGHT 20 /* Height of a reve cycle item. */
- X #define CWIDTH 32 /* Width of a reve cycle item. */
- X- #define CY ((NOROWS*BHEIGHT) + ((NOROWS-1)*BGAP) + (2*BBORDER))
- X #define NOBUTS 6 /* Number of reve buttons. */
- X- #define NOROWS 6 /* Number of rows of reve items. */
- X #define PIECE_MARGIN 8
- X #define PIECE_RAD (CELL_SIZE / 2 - PIECE_MARGIN)
- X #define TOTAL_HEIGHT CY + (8 * CELL_SIZE) + (2 * BBORDER)
- X #define TOTAL_WIDTH ((NOBUTS*BWIDTH) + ((NOBUTS-1)*BGAP) + (2*BBORDER))
- X
- X /* States that the the Reve squares can be in. */
- X #define BLACK (-1) /* Piece definitions. */
- X--- 49,73 ----
- X #define BGAP 10 /* Width of the gap between buttons. */
- X #define BHEIGHT 32 /* Height of a reve button item. */
- X #define BWIDTH 64 /* Width of a reve button item. */
- X #define CHEIGHT 20 /* Height of a reve cycle item. */
- X #define CWIDTH 32 /* Width of a reve cycle item. */
- X #define NOBUTS 6 /* Number of reve buttons. */
- X #define PIECE_MARGIN 8
- X #define PIECE_RAD (CELL_SIZE / 2 - PIECE_MARGIN)
- X+
- X+ #ifdef XVIEW
- X+ #define CELL_SIZE 54
- X+ #define CY 0
- X+ #define NOROWS 0
- X+ #define TOTAL_HEIGHT (8 * CELL_SIZE) + (2 * BBORDER)
- X+ #define TOTAL_WIDTH (8 * CELL_SIZE) + (2 * BBORDER)
- X+ #else
- X+ #define CELL_SIZE (int) ((TOTAL_WIDTH-(2*BBORDER)) / BOARD_SIZE)
- X+ #define CY ((NOROWS*BHEIGHT) + ((NOROWS-1)*BGAP) + (2*BBORDER))
- X+ #define NOROWS 6 /* Number of rows of reve items. */
- X #define TOTAL_HEIGHT CY + (8 * CELL_SIZE) + (2 * BBORDER)
- X #define TOTAL_WIDTH ((NOBUTS*BWIDTH) + ((NOBUTS-1)*BGAP) + (2*BBORDER))
- X+ #endif /*XVIEW*/
- X
- X /* States that the the Reve squares can be in. */
- X #define BLACK (-1) /* Piece definitions. */
- X***************
- X*** 91,104 ****
- X
- X #ifndef MAXLINE
- X #define MAXLINE 80 /* Length of character strings. */
- X! #endif /*MAXLINE*/
- X
- X #define MAXMENUS 4 /* Maximum number of popup menus. */
- X #define NIVEAUMAX 25 /* Maximum possible depth. */
- X
- X #ifdef NOINDEX
- X #define index strchr
- X #endif /*NOINDEX*/
- X
- X #define NOMOVE -1
- X #define OPPONENT(p) p * -1
- X--- 107,122 ----
- X
- X #ifndef MAXLINE
- X #define MAXLINE 80 /* Length of character strings. */
- X! #endif /*!MAXLINE*/
- X
- X #define MAXMENUS 4 /* Maximum number of popup menus. */
- X #define NIVEAUMAX 25 /* Maximum possible depth. */
- X
- X+ #ifndef X11
- X #ifdef NOINDEX
- X #define index strchr
- X #endif /*NOINDEX*/
- X+ #endif /*!X11*/
- X
- X #define NOMOVE -1
- X #define OPPONENT(p) p * -1
- X***************
- X*** 116,128 ****
- X
- X #ifndef EDGENAME
- X #define EDGENAME "reve.edgetable"
- X! #endif /*EDGENAME*/
- X
- X! #ifndef NO_4_3SIGNAL
- X #define SIGRET void
- X #else
- X #define SIGRET int
- X! #endif /*NO_4_3SIGNAL*/
- X
- X #define VINVUL 50
- X
- X--- 134,146 ----
- X
- X #ifndef EDGENAME
- X #define EDGENAME "reve.edgetable"
- X! #endif /*!EDGENAME*/
- X
- X! #ifndef INT_SIGNAL
- X #define SIGRET void
- X #else
- X #define SIGRET int
- X! #endif /*!INT_SIGNAL*/
- X
- X #define VINVUL 50
- X
- X***************
- X*** 140,146 ****
- X #define MOUSE_MOVING 110 /* Mouse is moving. */
- X #define IGNORE_EVENT 111 /* No interest in this event. */
- X
- X! /* Batch or locking direction (ON or OFF). */
- X enum bltype { IS_OFF, IS_ON } ;
- X
- X /* Reve move status. */
- X--- 158,164 ----
- X #define MOUSE_MOVING 110 /* Mouse is moving. */
- X #define IGNORE_EVENT 111 /* No interest in this event. */
- X
- X! /* Batch, last move, locking or show all direction (ON or OFF). */
- X enum bltype { IS_OFF, IS_ON } ;
- X
- X /* Reve move status. */
- X***************
- X*** 167,176 ****
- X enum item_type { P_BUTTON, P_CYCLE, P_MESSAGE } ;
- X
- X /* Different panel items. */
- X! enum panel_type { LAST_BUT, LOAD_BUT, NEW_GAME_BUT, SAVE_BUT,
- X SUGGEST_BUT, UNDO_BUT, DONE_BUT, CANCEL_BUT, QUIT_BUT,
- X BLACK_PLAYS, WHITE_PLAYS, DIFFICULTY, NOTES,
- X! PANEL_MES, NOTES_MES, SCORE_MES, TURN_MES } ;
- X
- X enum set_type { INCREMENT, DECREMENT, NONE } ; /* Cycle directions. */
- X
- X--- 185,194 ----
- X enum item_type { P_BUTTON, P_CYCLE, P_MESSAGE } ;
- X
- X /* Different panel items. */
- X! enum panel_type { LOAD_BUT, NEW_GAME_BUT, SAVE_BUT, SHOW_ALL_BUT,
- X SUGGEST_BUT, UNDO_BUT, DONE_BUT, CANCEL_BUT, QUIT_BUT,
- X BLACK_PLAYS, WHITE_PLAYS, DIFFICULTY, NOTES,
- X! PANEL_MES, EVAL_MES, SCORE_MES, TURN_MES } ;
- X
- X enum set_type { INCREMENT, DECREMENT, NONE } ; /* Cycle directions. */
- X
- X***************
- X*** 187,192 ****
- X--- 205,211 ----
- X int move ;
- X int moves_left ;
- X long note ;
- X+ time_t timeleft ;
- X } BOARD ;
- X
- X struct iteminfo /* Item information record. */
- X***************
- X*** 213,233 ****
- X void done(), draw_button(), draw_cycle() ;
- X void draw_cycle_item(), draw_image(), draw_line() ;
- X void draw_piece(), draw_rect(), draw_stencil() ;
- X! void draw_text(), draw_textfield(), get_filename() ;
- X void get_options(), get_xy(), getparam() ;
- X void handle_board_event(), handle_event(), handle_item() ;
- X void handle_key(), init_canvas(), init_edge_table() ;
- X void init_fonts(), init_notes(), init_player() ;
- X void initboard(), initialise() ;
- X! void last(), load_colors(), load_game() ;
- X! void lock_screen() ;
- X void make_canvas(), make_frame(), make_icon() ;
- X void make_message(), make_move(), make_panel() ;
- X! void message(), nap_upto() ;
- X! void new_game(), process_event(), quit() ;
- X void remove_textfield(), save_game(), set_cursor() ;
- X void set_cycle(), set_display_types() ;
- X void set_timer(), set_score(), set_turn() ;
- X void show_suggestion(), start_tool() ;
- X void suggest(), think(), undo() ;
- X void update_board_image(), usage(), who_wins() ;
- X--- 232,253 ----
- X void done(), draw_button(), draw_cycle() ;
- X void draw_cycle_item(), draw_image(), draw_line() ;
- X void draw_piece(), draw_rect(), draw_stencil() ;
- X! void draw_text(), draw_textfield() ;
- X! void generate_graphics(), get_filename() ;
- X void get_options(), get_xy(), getparam() ;
- X void handle_board_event(), handle_event(), handle_item() ;
- X void handle_key(), init_canvas(), init_edge_table() ;
- X void init_fonts(), init_notes(), init_player() ;
- X void initboard(), initialise() ;
- X! void load_colors(), load_game(), lock_screen() ;
- X void make_canvas(), make_frame(), make_icon() ;
- X void make_message(), make_move(), make_panel() ;
- X! void message(), nap_upto(), new_game() ;
- X! void position_popup(), process_event(), quit() ;
- X void remove_textfield(), save_game(), set_cursor() ;
- X void set_cycle(), set_display_types() ;
- X void set_timer(), set_score(), set_turn() ;
- X+ void show_all(), show_all_moves(), show_last() ;
- X void show_suggestion(), start_tool() ;
- X void suggest(), think(), undo() ;
- X void update_board_image(), usage(), who_wins() ;
- X
- X------- tty.c -------
- X*** /tmp/da28926 Fri Nov 9 10:40:00 1990
- X--- tty.c Mon Nov 5 09:08:40 1990
- X***************
- X*** 7,17 ****
- X * Copyright (C) 1990 - Rich Burridge & Yves Gallot.
- X * All rights reserved.
- X *
- X! * Permission is given to distribute these sources, as long as the
- X! * introductory messages are not removed, and no monies are exchanged.
- X *
- X! * You are forbidden from using Reve as is, or in a modified state, in
- X! * any tournaments, without the permission of the authors.
- X *
- X * No responsibility is taken for any errors or inaccuracies inherent
- X * either to the comments or the code of this program, but if reported
- X--- 7,22 ----
- X * Copyright (C) 1990 - Rich Burridge & Yves Gallot.
- X * All rights reserved.
- X *
- X! * Permission is granted to copy this source, for redistribution
- X! * in source form only, provided the news headers in "substantially
- X! * unaltered format" are retained, the introductory messages are not
- X! * removed, and no monies are exchanged.
- X *
- X! * Permission is also granted to copy this source, without the
- X! * news headers, for the purposes of making an executable copy by
- X! * means of compilation, provided that such copy will not be used
- X! * for the purposes of competition in any othello tournaments, without
- X! * prior permission from the authors.
- X *
- X * No responsibility is taken for any errors or inaccuracies inherent
- X * either to the comments or the code of this program, but if reported
- X***************
- X*** 18,36 ****
- X * (see README file), then an attempt will be made to fix them.
- X */
- X
- X! #include <stdio.h>
- X! #include <strings.h>
- X #include <sys/ioctl.h>
- X #include <signal.h>
- X
- X #ifdef SYSV
- X #include <sgtty.h>
- X #endif /*SYSV*/
- X
- X- #include "reve.h"
- X- #include "color.h"
- X- #include "extern.h"
- X-
- X #define DRAW_STRING(col, row, str, v) draw_string(col, row, str, v), return
- X
- X enum gr_type gtype = GTTY ; /* Graphics type. */
- X--- 23,41 ----
- X * (see README file), then an attempt will be made to fix them.
- X */
- X
- X! #include "reve.h"
- X! #include "color.h"
- X! #include "extern.h"
- X #include <sys/ioctl.h>
- X #include <signal.h>
- X
- X #ifdef SYSV
- X+ #include <string.h>
- X #include <sgtty.h>
- X+ #else
- X+ #include <strings.h>
- X #endif /*SYSV*/
- X
- X #define DRAW_STRING(col, row, str, v) draw_string(col, row, str, v), return
- X
- X enum gr_type gtype = GTTY ; /* Graphics type. */
- X***************
- X*** 60,69 ****
- X } ;
- X
- X struct tty_info ttyvals[MAXITEMS] = {
- X! { 1, 1, 33, 33, }, /* Last */
- X! { 11, 1, 107, 33, }, /* Load */
- X! { 22, 1, 167, 33, }, /* New game */
- X! { 33, 1, 255, 33, }, /* Save */
- X { 44, 1, 318, 33, }, /* Suggest */
- X { 55, 1, 403, 33, }, /* Undo */
- X { -1, -1, 33, 75, }, /* Done (not displayed). */
- X--- 65,74 ----
- X } ;
- X
- X struct tty_info ttyvals[MAXITEMS] = {
- X! { 1, 1, 33, 33, }, /* Load */
- X! { 11, 1, 107, 33, }, /* New game */
- X! { 22, 1, 167, 33, }, /* Save */
- X! { 33, 1, 255, 33, }, /* Show all */
- X { 44, 1, 318, 33, }, /* Suggest */
- X { 55, 1, 403, 33, }, /* Undo */
- X { -1, -1, 33, 75, }, /* Done (not displayed). */
- X***************
- X*** 85,94 ****
- X } ;
- X
- X struct other_info othervals[MAXITEMS] = {
- X- { -1, -1, }, /* Last (ignored). */
- X { -1, -1, }, /* Load (ignored). */
- X { -1, -1, }, /* New game (ignored). */
- X { -1, -1, }, /* Save (ignored). */
- X { -1, -1, }, /* Suggest (ignored). */
- X { -1, -1, }, /* Undo (ignored). */
- X { -1, -1, }, /* Done (ignored). */
- X--- 90,99 ----
- X } ;
- X
- X struct other_info othervals[MAXITEMS] = {
- X { -1, -1, }, /* Load (ignored). */
- X { -1, -1, }, /* New game (ignored). */
- X { -1, -1, }, /* Save (ignored). */
- X+ { -1, -1, }, /* Show all (ignored). */
- X { -1, -1, }, /* Suggest (ignored). */
- X { -1, -1, }, /* Undo (ignored). */
- X { -1, -1, }, /* Done (ignored). */
- X***************
- X*** 346,353 ****
- X }
- X else if (x == 237 && y == 195) /* Note message. */
- X {
- X! draw_string(othervals[(int) NOTES_MES].column,
- X! othervals[(int) NOTES_MES].row, str, TRUE) ;
- X return ;
- X }
- X else if (x == 15 && y == 237) /* Score message. */
- X--- 351,358 ----
- X }
- X else if (x == 237 && y == 195) /* Note message. */
- X {
- X! draw_string(othervals[(int) EVAL_MES].column,
- X! othervals[(int) EVAL_MES].row, str, TRUE) ;
- X return ;
- X }
- X else if (x == 15 && y == 237) /* Score message. */
- X***************
- X*** 371,378 ****
- X if (EQUAL(str, items[i].text))
- X if (ttyvals[i].column != -1)
- X {
- X! if (EQUAL(str, "load")) STRCPY(str, "Load") ;
- X! else if (EQUAL(str, "save")) STRCPY(str, "Save") ;
- X draw_string(ttyvals[i].column, ttyvals[i].row, str, FALSE) ;
- X return ;
- X }
- X--- 376,384 ----
- X if (EQUAL(str, items[i].text))
- X if (ttyvals[i].column != -1)
- X {
- X! if (EQUAL(str, "load")) STRCPY(str, "Load") ;
- X! else if (EQUAL(str, "save")) STRCPY(str, "Save") ;
- X! else if (EQUAL(str, "show all")) STRCPY(str, "show All") ;
- X draw_string(ttyvals[i].column, ttyvals[i].row, str, FALSE) ;
- X return ;
- X }
- X
- X------- x11.c -------
- X*** /tmp/da28929 Fri Nov 9 10:40:00 1990
- X--- x11.c Thu Nov 8 10:28:39 1990
- X***************
- X*** 7,17 ****
- X * Copyright (c) 1990 - Rich Burridge & Yves Gallot.
- X * All rights reserved.
- X *
- X! * Permission is given to distribute these sources, as long as the
- X! * introductory messages are not removed, and no monies are exchanged.
- X *
- X! * You are forbidden from using Reve as is, or in a modified state, in
- X! * any tournaments, without the permission of the authors.
- X *
- X * No responsibility is taken for any errors or inaccuracies inherent
- X * either to the comments or the code of this program, but if reported
- X--- 7,22 ----
- X * Copyright (c) 1990 - Rich Burridge & Yves Gallot.
- X * All rights reserved.
- X *
- X! * Permission is granted to copy this source, for redistribution
- X! * in source form only, provided the news headers in "substantially
- X! * unaltered format" are retained, the introductory messages are not
- X! * removed, and no monies are exchanged.
- X *
- X! * Permission is also granted to copy this source, without the
- X! * news headers, for the purposes of making an executable copy by
- X! * means of compilation, provided that such copy will not be used
- X! * for the purposes of competition in any othello tournaments, without
- X! * prior permission from the authors.
- X *
- X * No responsibility is taken for any errors or inaccuracies inherent
- X * either to the comments or the code of this program, but if reported
- X***************
- X*** 18,30 ****
- X * (see README file), then an attempt will be made to fix them.
- X */
- X
- X- #include <stdio.h>
- X- #include <strings.h>
- X- #include <sys/time.h>
- X #include "reve.h"
- X #include "color.h"
- X #include "extern.h"
- X #include "images.h"
- X #include <X11/Xlib.h>
- X #include <X11/Xutil.h>
- X #include <X11/Xatom.h>
- X--- 23,40 ----
- X * (see README file), then an attempt will be made to fix them.
- X */
- X
- X #include "reve.h"
- X #include "color.h"
- X #include "extern.h"
- X #include "images.h"
- X+ #include <sys/time.h>
- X+
- X+ #ifdef SYSV
- X+ #include <string.h>
- X+ #else
- X+ #include <strings.h>
- X+ #endif /*SYSV*/
- X+
- X #include <X11/Xlib.h>
- X #include <X11/Xutil.h>
- X #include <X11/Xatom.h>
- X***************
- X*** 53,59 ****
- X GC stencilgc[MAXDPY] ; /* Graphics context for stencils. */
- X Pixmap images[MAXIMAGES] ;
- X Pixmap no_pixmap ;
- X! Pixmap load_color_icon(), load_image(), reve_icon ;
- X Window frame[MAXDPY], root[MAXDPY] ;
- X XClassHint class_hint = { "reve", "Reve" } ;
- X XColor BGcolor, FGcolor ;
- X--- 63,69 ----
- X GC stencilgc[MAXDPY] ; /* Graphics context for stencils. */
- X Pixmap images[MAXIMAGES] ;
- X Pixmap no_pixmap ;
- X! Pixmap load_color_icon(), load_image(), reve_icon[MAXDPY] ;
- X Window frame[MAXDPY], root[MAXDPY] ;
- X XClassHint class_hint = { "reve", "Reve" } ;
- X XColor BGcolor, FGcolor ;
- X***************
- X*** 62,68 ****
- X XSizeHints size ;
- X XWMHints wm_hints ;
- X XGCValues gc_val ; /* Used to setup graphics context values. */
- X- int cmap_loaded ; /* Set if we've already loaded the colormap. */
- X int gc_flags ; /* Used to set up graphics context flags. */
- X int screen[MAXDPY] ; /* Default graphics display screen. */
- X int xfd[MAXDPY] ; /* Server connection file descriptors. */
- X--- 72,77 ----
- X***************
- X*** 79,85 ****
- X fd_set fullmask ; /* Full mask of file descriptors to check on. */
- X fd_set readmask ; /* Readmask used in select call. */
- X #endif /*NO_43SELECT*/
- X! #endif /*NOSELECT*/
- X
- X /* 256-byte table for quickly reversing the bits in an unsigned 8-bit char,
- X * used to convert between MSBFirst and LSBFirst image formats.
- X--- 88,94 ----
- X fd_set fullmask ; /* Full mask of file descriptors to check on. */
- X fd_set readmask ; /* Readmask used in select call. */
- X #endif /*NO_43SELECT*/
- X! #endif /*!NOSELECT*/
- X
- X /* 256-byte table for quickly reversing the bits in an unsigned 8-bit char,
- X * used to convert between MSBFirst and LSBFirst image formats.
- X***************
- X*** 221,227 ****
- X
- X d = (int) cur_dpyno ;
- X if (iscolor[d]) gc_val.foreground = palette[color] ;
- X! else gc_val.foreground = foregnd[d] ;
- X gc_val.function = opvals[(int) op] ;
- X XChangeGC(dpy[d], gc[d], GCForeground | GCFunction, &gc_val) ;
- X XDrawLine(dpy[d], frame[d], gc[d], x1, y1, x2, y2) ;
- X--- 230,240 ----
- X
- X d = (int) cur_dpyno ;
- X if (iscolor[d]) gc_val.foreground = palette[color] ;
- X! else
- X! {
- X! if (color == C_WHITE) gc_val.foreground = backgnd[d] ;
- X! else gc_val.foreground = foregnd[d] ;
- X! }
- X gc_val.function = opvals[(int) op] ;
- X XChangeGC(dpy[d], gc[d], GCForeground | GCFunction, &gc_val) ;
- X XDrawLine(dpy[d], frame[d], gc[d], x1, y1, x2, y2) ;
- X***************
- X*** 356,362 ****
- X #else
- X FD_ZERO(&fullmask) ;
- X #endif /*NO_43SELECT*/
- X! #endif /*NOSELECT*/
- X
- X if (dtype == XTWO)
- X {
- X--- 369,375 ----
- X #else
- X FD_ZERO(&fullmask) ;
- X #endif /*NO_43SELECT*/
- X! #endif /*!NOSELECT*/
- X
- X if (dtype == XTWO)
- X {
- X***************
- X*** 364,370 ****
- X init_X(DPY2, XWHITE) ;
- X }
- X else init_X(DPY1, dtype) ;
- X- cmap_loaded = 0 ;
- X move_delta = 10 ;
- X
- X images[(int) BUT_STENCIL] = load_image(button_stencil_image) ;
- X--- 377,382 ----
- X***************
- X*** 394,400 ****
- X u_char red[OTH_COLORSIZE], green[OTH_COLORSIZE], blue[OTH_COLORSIZE] ;
- X int d, i, numcolors ;
- X
- X- if (cmap_loaded) return ;
- X d = (int) cur_dpyno ;
- X iscolor[d] = 0 ;
- X if (DisplayCells(dpy[d], screen[d]) > 2)
- X--- 406,411 ----
- X***************
- X*** 417,423 ****
- X FPRINTF(stderr, "%s: cannot allocate colors.\n", progname) ;
- X exit(1) ;
- X }
- X- cmap_loaded = 1 ;
- X }
- X }
- X
- X--- 428,433 ----
- X***************
- X*** 491,499 ****
- X opvals[(int) RSRC] = GXcopy ;
- X opvals[(int) RINV] = GXxor ;
- X
- X! load_colors() ;
- X! if (iscolor[d]) reve_icon = load_color_icon(cicon_image) ;
- X! else reve_icon = load_image(icon_image) ;
- X
- X size.flags = PMinSize | PMaxSize | PPosition | PSize ;
- X size.x = 0 ;
- X--- 501,509 ----
- X opvals[(int) RSRC] = GXcopy ;
- X opvals[(int) RINV] = GXxor ;
- X
- X! if (!monochrome) load_colors() ;
- X! if (iscolor[d]) reve_icon[d] = load_color_icon(cicon_image) ;
- X! else reve_icon[d] = load_image(icon_image) ;
- X
- X size.flags = PMinSize | PMaxSize | PPosition | PSize ;
- X size.x = 0 ;
- X***************
- X*** 527,539 ****
- X protocol_atom[d] = XInternAtom(dpy[d], "WM_PROTOCOLS", False) ;
- X kill_atom[d] = XInternAtom(dpy[d], "WM_DELETE_WINDOW", False) ;
- X
- X! XSetStandardProperties(dpy[d], frame[d], "reve", NULL, reve_icon,
- X argv, argc, &size) ;
- X
- X wm_hints.icon_x = ix ;
- X wm_hints.icon_y = iy ;
- X wm_hints.input = True ;
- X! wm_hints.icon_pixmap = reve_icon ;
- X wm_hints.flags = InputHint | IconPixmapHint ;
- X if (iconic)
- X {
- X--- 537,549 ----
- X protocol_atom[d] = XInternAtom(dpy[d], "WM_PROTOCOLS", False) ;
- X kill_atom[d] = XInternAtom(dpy[d], "WM_DELETE_WINDOW", False) ;
- X
- X! XSetStandardProperties(dpy[d], frame[d], "reve", NULL, reve_icon[d],
- X argv, argc, &size) ;
- X
- X wm_hints.icon_x = ix ;
- X wm_hints.icon_y = iy ;
- X wm_hints.input = True ;
- X! wm_hints.icon_pixmap = reve_icon[d] ;
- X wm_hints.flags = InputHint | IconPixmapHint ;
- X if (iconic)
- X {
- X***************
- X*** 587,593 ****
- X #else
- X FD_SET(xfd[d], &fullmask) ;
- X #endif /*NO_43SELECT*/
- X! #endif /*NOSELECT*/
- X
- X return(dpy) ;
- X }
- X--- 597,603 ----
- X #else
- X FD_SET(xfd[d], &fullmask) ;
- X #endif /*NO_43SELECT*/
- X! #endif /*!NOSELECT*/
- X
- X return(dpy) ;
- X }
- X***************
- X*** 704,710 ****
- X for (;;)
- X {
- X get_event() ; /* Get next canvas event. */
- X- process_event() ; /* Find out what kind it is. */
- X handle_event() ; /* And do the apropriate action. */
- X }
- X }
- X--- 714,719 ----
- X***************
- X*** 713,728 ****
- X Xselect_input()
- X {
- X int fd = -1 ; /* File descriptor with this event. */
- X! struct timeval tval ; /* To set checking period. */
- X
- X- tval.tv_usec = 0 ;
- X- tval.tv_sec = 0 ;
- X-
- X for (;;)
- X {
- X! XSync(dpy[0], 0) ;
- X! if (dtype == XTWO) XSync(dpy[1], 0) ;
- X!
- X #ifdef NOSELECT
- X fd = 0 ;
- X #else
- X--- 722,734 ----
- X Xselect_input()
- X {
- X int fd = -1 ; /* File descriptor with this event. */
- X! /** static struct timeval tval = { 0, 0 } ; **/
- X! struct timeval *tval = NULL ;
- X
- X for (;;)
- X {
- X! XFlush(dpy[(int) DPY1]) ;
- X! XFlush(dpy[(int) DPY2]) ;
- X #ifdef NOSELECT
- X fd = 0 ;
- X #else
- X***************
- X*** 730,737 ****
- X readmask = fullmask ;
- X #ifdef NO_43SELECT
- X SELECT(32, &readmask, 0, 0, &tval) ;
- X! if (readmask && (1 << xfd)[0]) fd = 0 ;
- X! else if (readmask && (1 << xfd)[1]) fd = 1 ;
- X #else
- X SELECT(FD_SETSIZE, &readmask, (fd_set *) 0, (fd_set *) 0, &tval) ;
- X if (FD_ISSET(xfd[0], &readmask)) fd = 0 ;
- X--- 736,743 ----
- X readmask = fullmask ;
- X #ifdef NO_43SELECT
- X SELECT(32, &readmask, 0, 0, &tval) ;
- X! if (readmask && (1 << xfd[0])) fd = 0 ;
- X! else if (readmask && (1 << xfd[1])) fd = 1 ;
- X #else
- X SELECT(FD_SETSIZE, &readmask, (fd_set *) 0, (fd_set *) 0, &tval) ;
- X if (FD_ISSET(xfd[0], &readmask)) fd = 0 ;
- X***************
- X*** 741,754 ****
- X
- X if (fd >= 0)
- X {
- X! cur_dpyno = (enum dpy_type) fd ;
- X! do
- X {
- X! get_event() ; /* Get next canvas event. */
- X! process_event() ; /* Find out what kind it is. */
- X! handle_event() ; /* And do appropriate action. */
- X }
- X! while (XPending(dpy[fd])) ;
- X }
- X }
- X }
- X--- 747,767 ----
- X
- X if (fd >= 0)
- X {
- X! fd = 0 ;
- X! cur_dpyno = DPY1 ;
- X! while (XPending(dpy[fd]))
- X {
- X! get_event() ; /* Get next canvas event. */
- X! handle_event() ; /* And do appropriate action. */
- X }
- X!
- X! fd = 1 ;
- X! cur_dpyno = DPY2 ;
- X! while (XPending(dpy[fd]))
- X! {
- X! get_event() ; /* Get next canvas event. */
- X! handle_event() ; /* And do appropriate action. */
- X! }
- X }
- X }
- X }
- X
- X------- FILES -------
- X*** /tmp/da28932 Fri Nov 9 10:40:01 1990
- X--- FILES Sat Nov 3 21:03:34 1990
- X***************
- X*** 33,38 ****
- X--- 33,39 ----
- X reve.edge1 - first half of the Reve edge stability table.
- X reve.edge2 - second half of the Reve edge stability table.
- X Makefile.dist - master Makefile used to build mp on Unix systems.
- X+ Imakefile - Imakefile for the X11 version of reve.
- X
- X sunview.c - Sun SunView graphics routines.
- X tty.c - dumb tty "graphics" routines.
- X
- X------- MANIFEST -------
- X*** /tmp/da28935 Fri Nov 9 10:40:02 1990
- X--- MANIFEST Sat Nov 3 21:04:35 1990
- X***************
- X*** 32,37 ****
- X--- 32,38 ----
- X x11.c | 4
- X xview.c | 4
- X sunview.c | 5
- X+ Imakefile | 5
- X images/black.icon | 5
- X images/reve.icon | 5
- X images/reve.color.icon | 5
- X
- X------- reve.edge2 -------
- X*** /tmp/da28938 Fri Nov 9 10:40:03 1990
- X--- reve.edge2 Fri Oct 26 12:05:37 1990
- X***************
- X*** 549,555 ****
- X edges[2188] = -80 [ -oooooo- ]
- X edges[2189] = 1304 [ xoooooo- ]
- X edges[2190] = -1166 [ o-ooooo- ]
- X! edges[2191] = 34 [ --ooooo- ]
- X edges[2192] = 1234 [ x-ooooo- ]
- X edges[2193] = 1434 [ oxooooo- ]
- X edges[2194] = -36 [ -xooooo- ]
- X--- 549,555 ----
- X edges[2188] = -80 [ -oooooo- ]
- X edges[2189] = 1304 [ xoooooo- ]
- X edges[2190] = -1166 [ o-ooooo- ]
- X! edges[2191] = 100 [ --ooooo- ]
- X edges[2192] = 1234 [ x-ooooo- ]
- X edges[2193] = 1434 [ oxooooo- ]
- X edges[2194] = -36 [ -xooooo- ]
- X***************
- X*** 1275,1281 ****
- X edges[2914] = 36 [ -xxxxxo- ]
- X edges[2915] = 6511 [ xxxxxxo- ]
- X edges[2916] = -6441 [ oooooo-- ]
- X! edges[2917] = 34 [ -ooooo-- ]
- X edges[2918] = 1234 [ xooooo-- ]
- X edges[2919] = -1236 [ o-oooo-- ]
- X edges[2920] = -36 [ --oooo-- ]
- X--- 1275,1281 ----
- X edges[2914] = 36 [ -xxxxxo- ]
- X edges[2915] = 6511 [ xxxxxxo- ]
- X edges[2916] = -6441 [ oooooo-- ]
- X! edges[2917] = 100 [ -ooooo-- ]
- X edges[2918] = 1234 [ xooooo-- ]
- X edges[2919] = -1236 [ o-oooo-- ]
- X edges[2920] = -36 [ --oooo-- ]
- X
- X
- END_OF_FILE
- if test 48717 -ne `wc -c <'patches01c'`; then
- echo shar: \"'patches01c'\" unpacked with wrong size!
- fi
- # end of 'patches01c'
- fi
- echo shar: End of archive 3 \(of 4\).
- cp /dev/null ark3isdone
- MISSING=""
- for I in 1 2 3 4 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 4 archives.
- rm -f ark[1-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
-